//导入express
const express = require("express");
const loginRouter = require("./routes/login/loginRouter");
const register = require("./routes/register");

//创建应用对象
const app = express();

// 引入所需的依赖包
const jwt = require("jsonwebtoken");

// 定义验证令牌的中间件函数
const verifyToken = (req, res, next) => {
  const token = req.headers.authorization; // 从请求头中获取令牌

  if (!token) {
    return res.status(401).send({ message: "未提供令牌" }); // 如果没有令牌，返回401未授权状态码和错误消息
  }

  try {
    // 解析令牌，验证其有效性
    const decoded = jwt.verify(token, "pengqingnan"); // 使用你的密钥替换'your_secret_key'
    req.user = decoded; // 将解析后的用户信息添加到请求对象中
    next(); // 如果令牌有效，继续处理请求
  } catch (err) {
    return res.status(401).send({ message: "无效的令牌" }); // 如果令牌无效，返回401未授权状态码和错误消息
  }
};

// 将验证令牌的中间件应用到除登录和注册接口之外的所有接口上
app.use("/api/*", verifyToken);

//格式化请求体参数
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

//设置
app.use(loginRouter);
app.use(register);

app.get("*", (req, res) => {
  res.send("<h1>404 Not Found</h1>");
});

//监听端口，启动服务器
app.listen(3000, () => {
  console.log("服务已经启动，端口 3000");
});
